package cn.tedu.bonfire.front.content.dao.persist.repository;


import cn.tedu.bonfire.common.pojo.vo.PageData;
import cn.tedu.bonfire.front.content.pojo.entity.Article;
import cn.tedu.bonfire.front.content.pojo.vo.*;
import org.springframework.data.domain.Page;
import java.util.List;

public interface IArticleRepository {



    /**
     * 插入文章数据
     *
     */
    int insert(Article article);

    /**
     * 根据id查询文章数据详情
     * @param id 文章ID
     * @return 匹配的文章数据详情，如果没有匹配的数据，则返回null
     */
    ArticleStandardVO getStandardById(Long id);

    /**
     * 查询推荐的文章列表
     *
     * @param

     */
    int updateViewById(Long id);

    Long selectUserArticles(Long userId);

    Long selectUserLikes(Long userId);

    Long selectUserViews(Long userId);

    Long selectUserCollect(Long userId);

    /**
     * 根据类别查询文章列表
     *
     * @param categoryId 文章类别的ID
     * @param isRecommend 是否推荐

     */
    PageData<ArticleListItemVO> listByCategory(Long categoryId,Integer isRecommend);

    /**
     * 根据类别查询文章列表
     *
     * @param categoryId 文章类别的ID

     */
    PageData<ArticleListItemVO> listByCategory(Long categoryId, Integer pageNum, Integer pageSize);

    /**
     * 根据ID删除文章数据
     *
     * @param id 文章ID
     * @return 受影响的行数
     */
    int deleteById(Long id);

    int setCommentCount(Long articleId, Integer commentCount);

    List<UserCollectListVO> selectMyArticle(Long userId);

    List<UserCollectListVO> getIsrecommend();

    List<UserCollectListVO> selectLike(Long authorId);

    List<UserCollectListVO> selectCollect(Long authorId);


    ArticleAuthorVO getAuthorByArticleId(Long id);

    PageData<ArticleListItemVO> listByRecommend();


    //PageData<ArticleListItemVO> listByHot();

    /**
     * 文章管理页面--根据id修改笔记状态(公开或私密)
     *
     * @param article 实体类
     * @return 受影响的行数
     */
    int updateArticle(Article article);

    PageData<UserDraftListVO> selectdraft(Long userId,Integer pageNum,Integer pageSize);

    List<UserCollectListVO> selectMyAuditArticle(Long userId);

   UserDraftListVO selectDraftDetail(Long authorId, Long articleId);
}
